const express = require('express')
const router = express.Router()
const { query } = require('../db')
// 添加路由
// 新增广告(post /)
router.post('/',async (req,res,next) => {
  // 获取post传递的参数
  const obj = req.body
  console.log(obj)
  let code = 400
  for(let k in obj) {
    code++
    if(!obj[k]) {
      return res.send({
        code,
        msg: `${k}不能为空`
      })
    }
  }
  // 添加当前时间的时间戳
  obj.ctime = Date.now()
  // 执行SQL命令
  try {
    var data = await query('insert into hs_ad set ?',[obj])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  res.send({
    code: 200,
    msg: '广告添加成功'
  })
})
// 编辑广告(put /)
router.put('/',async (req,res,next) => {
  // 获取post传递的参数
  const obj = req.body
  console.log(obj)
  // 先把要检测的属性放入到一个数组，从数组中查找
  const arr = ['id','pic','client','place','href']
  // 遍历数组
  let code = 400
  for(let i = 0; i<arr.length; i++) {
    code++
    let k = arr[i]
    // 判断对象中是否含有这个属性
    if(!obj[k]) {
      return res.send({
        code,
        msg: `${k}不能为空`
      })
    }
  }
  // 获取时间戳
  obj.ctime = Date.now()
  // 执行SQL命令
  try {
    var data = await query('update hs_ad set ? where id=?',[obj,obj.id])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  // 判断是否成功
  if(data.changedRows === 0) {
    res.send({
      code: 410,
      msg: '广告修改失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '广告修改成功'
    })
  }
})
// 删除广告(delete /)
router.delete('/',async (req,res,next) =>{
  // 获取get传递的参数
  const { id } = req.query
  if(!id) {
    return res.send({
      code: 401,
      msg: 'id不能为空'
    })
  }
  // 执行SQL命令
  try {
    var data = await query('delete from hs_ad where id=?',[id])
  } catch(err) {
    return next(err)
  }
  // console.log(data)
  if(data.affectedRows === 0) {
    res.send({
      code: 410,
      msg: '广告删除失败'
    })
  } else {
    res.send({
      code: 200,
      msg: '广告删除成功'
    })
  }
})
// 广告列表(get /)
router.get('/',async (req,res,next) => {
  const page = 10
  // 获取get传递的参数
  let { pno } = req.query
  if(!pno) {
    pno = 1
  }
  // 计算开始查询的值
  let start = (pno - 1) * page
  // 执行SQL命令
  try {
    var data = await query('select * from hs_ad order by id desc limit ?,?;select count(*) n from hs_ad',[start,page])
  } catch(err) {
    return next(err)
  }
  console.log(data)
  res.send({
    code: 200,
    msg: '广告列表',
    data: data[0],
    total: data[1][0].n,
    pno
  })
})

module.exports = router